package com.gzx.risk.core.service;

import java.util.List;

import com.gzx.risk.core.apis.context.ApiContext;
import com.gzx.risk.core.pojo.*;

public interface RiskService {

	/**
	 * 获取订单信息
	 */
	OrderInfo findRiskOrder(int oid);

	/**
	 * 获取订单信息
	 */
	OrderInfo findRiskOrder(String ordercode);

	/**
	 * 获取需要风控的订单信息
	 */
	List<OrderInfo> findRiskOrders();

    /**
     * 获取需要风控二阶段订单信息
     */
    List<OrderInfo> findRiskTwoOrders();

    /**
	 * 获取用户信息 基本信息
	 */
	UserInfo findUserInfo(Long uid);

    /**
     * 获取全量用户信息（包含征信信息CreditAuthInfo）
     */
    UserInfo findFullUserInfo(Long uid);

	/**
	 * 记录日志
	 */
	void log(ApiContext ctx);

	/**
	 * 获取用户最后一次风控信息
	 */
	RiskRuleResultInfo findLastRiskRuleResult(String id);

	/**
	 * 根据身份证判断是否黑名单
	 */
	boolean isBlack(String id);

	/**
	 * 根据身份证判断是否白名单
	 */
	boolean isWhite(String id);

	/**
	 * 判断订单是否已在（信审中）或（征信检测中）
	 */
	boolean isInRisk(String ordercode);

    boolean isInRiskTwo(String ordercode);

    /**
     * 获取用户分层信息
     */
    List<CrossBinningInfo> getCrossBiningInfo();

    /**
     * 获取信用分/欺诈分 分值区间信息
     * @return
     */
    List<BinIntervalInfo> getBinIntervalInfo();

    /**
     * 用户分层结果
     * @param resultInfo
     */
    void saveUserScore(UserLevelResultInfo resultInfo);

    /**
     * 获取用户分层信息 根据身份证
     * @param idCard
     * @return
     */
    UserLevelResultInfo getUserScoreResultByIdCard(String idCard);

    /**
     * 获取用户分层信息 根据uid
     * @param uid
     * @return
     */
    UserLevelResultInfo getUserScoreResultByUid(String uid);
}
